package org.jet.emall.common.restful.result;

/**
 * @author xiaozai
 * @version 1.0
 * @date 2020-04-05 08:56
 *
 * restful对状态码的规范如下:
 * 当GET, PUT和PATCH请求成功时，要返回对应的数据，及状态码200，即SUCCESS
 * 当POST创建数据成功时，要返回创建的数据，及状态码201，即CREATED
 * 当DELETE删除数据成功时，不返回数据，状态码要返回204，即NO CONTENT
 * 当GET 不到数据时，状态码要返回404，即NOT FOUND
 * 任何时候，如果请求有问题，如校验请求数据时发现错误，要返回状态码 400，即BAD REQUEST
 * 当API 请求需要用户认证时，如果request中的认证信息不正确，要返回状态码 401，即UNAUTHORIZED
 * 当API 请求需要验证用户权限时，如果当前用户无相应权限，要返回状态码 403，即FORBIDDEN
 *
 */
public enum ResultCode implements ErrorCode {
    //GET,PUT和PATCH请求操作成功
    SUCCESS(200, "操作成功"),
    //POST请求创建成功
    CREATED(201,"创建成功"),
    //DELETE请求成功
    NO_CONTENT(204,"删除成功"),
    //资源未找到
    NOT_FOUND(404,"资源未找到"),
    //错误请求
    BAD_REQUEST(400,"错误请求"),
    //暂未登录或token过期
    UNAUTHORIZED(401,"暂未登录或token过期"),
    //服务器操作失败
    SERVER_ERROR(500, "服务器操作失败"),
    //没有相关权限
    FORBIDDEN(403, "没有相关权限");

    private long code;
    private String message;

    private ResultCode(long code, String message) {
        this.code = code;
        this.message = message;
    }

    @Override
    public long getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}
